//二分查找
/*描述
对于一个有序数组，我们通常采用二分查找的方式来定位某一元素，请编写二分查找的算法，在数组中查找指定元素。

给定一个整数数组A及它的大小n，同时给定要查找的元素val，请返回它在数组中的位置(从0开始)，若不存在该元素，返回-1。若该元素出现多次，请返回第一次出现的位置。*/
class BinarySearch {
  public:
    int getPos(vector<int> A, int n, int val) {
        // write code here
        int left = 0;
        int right = n - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (left <= right && A[mid] >= val) {
                right=mid-1;
            } else  {
                left=mid+1;
            }
        }
        if(A[left]==val)
        return left;
        return -1;
    }
};